package br.com.werp.regras.documento.integracao;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;

import br.com.werp.regras.geral.ErroPadrao;
import br.com.werp.regras.geral.integracao.MasterDAO;
import br.com.werp.regras.geral.util.Constantes;
import br.com.werp.regras.geral.vos.documento.DocumentoPagamentoAgrupadoVO;
import br.com.werp.regras.geral.vos.tabelas.Agrupamento_documento;
import br.com.werp.regras.geral.vos.tabelas.Documento_pagamento;


/**
 * @author Sobreira
 * Criado em 08/08/2006
 */
public class PagamentoDAO extends MasterDAO {
    private static PagamentoDAO pagamentoDAO = null;

    private PagamentoDAO(String banco) throws Exception {
        super(banco);
    }

    public static PagamentoDAO getPagamentoDAO() throws Exception {
        if (pagamentoDAO == null) {
            pagamentoDAO = new PagamentoDAO(Constantes.BANCO);
        }

        return pagamentoDAO;
    }

    public void inserirPagamento(Object key,
        Documento_pagamento documento_pagamento)
        throws ErroPadrao, SQLException, Exception {
        inserirVO(validarTransacao(key), documento_pagamento);
    }



    public List pesquisaPagamentosAgrupados(Object key,
        DocumentoPagamentoAgrupadoVO documentoPagamentoAgrupadoVO)
        throws Exception {
        Connection connection = null;

        if (key == null) {
            connection = getConexao();
        } else {
            connection = validarTransacao(key);
        }

        String where =
            " and dcpg_id = docm_id and apdo_doc_agrupado = docm_id ";
        String tabelas =
            " documento_pagamento , documento , agrupamento_documento ";

        try {
            return pesquisarVO(connection, documentoPagamentoAgrupadoVO, where,
                tabelas, DocumentoPagamentoAgrupadoVO.EXCLUIDAS);
        } finally {
            if (key == null) {
                liberaConeccao(connection);
            }
        }
    }

 
    public void apagarAgrupamentoPagamento(Object key, int docm_id)
        throws Exception {
        Connection connection = validarTransacao(key);
        Agrupamento_documento agrupamento_documento =
            new Agrupamento_documento();
        agrupamento_documento.setApdo_doc_agrupado(docm_id);
        excluirVO(connection, agrupamento_documento);
    }

    public void apagarPagamento(Object key,
        Documento_pagamento documento_pagamento) throws Exception {
        Connection connection = validarTransacao(key);
        excluirVO(connection, documento_pagamento);
    }
}
